#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>

#include "pilhas.h"


int main(){
	Bool_t menu = TRUE;
	short int opcao;
	Prato_t elemento;
	while(menu){
		printf("1 - Ver número de pilhas\n"
		       "2 - Nova pilha\n"
		       "3 - Verificar se pilha existe\n"
		       "4 - Verificar se pilha está vazia\n"
		       "5 - Ver tamanho da pilha\n"
               "6 - Colocar na pilha\n"
               "7 - Tirar da pilha\n"
               "8 - Ver na pilha\n"
               "9 - Destruir pilha\n"
               "10 - Destruir pilhas\n"
               "Opções inválidas - Sair\n");
		scanf("%hd",&opcao);
		switch(opcao){
			case 1:
			 printf("Existem %u pilhas\n",ver_num_pilhas());
			 break;
			case 2:
			 printf("Pilha %hd criada\n",nova_pilha());
			 break;
			case 3:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 if(existe_pilha(opcao)){
				 printf("Pilha %hd existe\n",opcao);
			 }else{
				 printf("Pilha %hd não existe\n",opcao);
			 }
			 break;
			case 4:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 if(esta_vazia(opcao)){
				 printf("Pilha %hd está vazia ou não existe\n",opcao);
			 }else{
				 printf("Pilha %hd não está vazia\n",opcao);
			 }
			 break;
			case 5:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 printf("A pilha %hd está com tamanho %ld\n",opcao,ver_tam_pilha(opcao));
			 break;
			case 6:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 printf("Digite o elemento: ");
			 scanf("%i",&elemento);
			 if(colocar_na_pilha(opcao,elemento)){
				 printf("Elemento %d colocado na pilha %hd\n",elemento,opcao);
			 }else{
				 printf("Falha ao colocar elemento %d na pilha %hd\n",elemento,opcao);
			 }
			 break;
			case 7:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 printf("Elemento %i tirado da pilha %hd\n",(tirar_da_pilha(opcao)),opcao);
			 break;
			case 8:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 printf("O elemento %i está no topo da pilha %hd\n",(ver_na_pilha(opcao)),opcao);
			 break;
			case 9:
			 printf("Digite a ID da pilha: ");
			 scanf("%hd",&opcao);
			 if(destruir_pilha(opcao)){
				 printf("Pilha %hd destruida\n",opcao);
			 }else{
				 printf("Falha ao destruir pilha %hd\n",opcao);
			 }
			 break;
			case 0xA:
			 if(destruir_pilhas()){
				 printf("Pilhas destruidas\n");
			 }else{
				 printf("Falhou ao destruir pilhas");
			 }
			 break;
			default:
			 destruir_pilhas();
			 menu = FALSE;
			 break;
		}
	}
	return 0;
}
